Mosaic Plot

Analysis of categorical breakdown by Carb and rec


library(foreign)
library(magrittr)
library(tidyverse)
library(ggmosaic)
library(janitor)
library(plotly)

Import Data

  • Preprocessing the Data
myData <- read.dbf("TalamhPrescriptions_forVisualisation.dbf")

myData$rec_opt <- as.character(myData$rec_opt)
myData$rec_opt[is.na(myData$rec_opt)]="NONE"
myData$carb_opt[is.na(myData$carb_opt)]="NONE"
## Warning in `[<-.factor`(`*tmp*`, is.na(myData$carb_opt), value =
## structure(c(3L, : invalid factor level, NA generated
tabyl(myData$rec_opt)
##  myData$rec_opt      n     percent
##     CONV_TO_SNW   1665 0.013776042
##            NONE 116424 0.963280436
##     NOTHIN_MMAI   1646 0.013618838
##          RETAIN   1127 0.009324684

Summary Data

Generate Summary Table

myData.Report <- myData %>% group_by(rec_opt,  carb_opt) %>% summarize( GIS_AREA  = sum(gis_area) )
## `summarise()` has grouped output by 'rec_opt'. You can override using the `.groups` argument.

Overlapping Objectives

myData.Report <- myData.Report %>% mutate(OverLap = "No-Overlap")

myData.Report$OverLap[ as.character(myData.Report$rec_opt)== as.character(myData.Report$carb_opt)] = 
  as.character(myData.Report$rec_opt)[ as.character(myData.Report$rec_opt)== as.character(myData.Report$carb_opt)]

Condense Categories

myData.Report$rec_opt <- as.character(myData.Report$rec_opt)
myData.Report$rec_opt[myData.Report$rec_opt %in% c("4YearGreenUp","4YearGreenUp_catch","standardmgmt")] = "NOTHIN_MMAI"

myData.Report$carb_opt <- factor(myData.Report$carb_opt,levels = c("NOTHIN_MMAI","CONV_TO_SNW","RETAIN","CONV_TO_SNW_MINERAL","REWET"))

myData.Report %>% tabyl(rec_opt)
##      rec_opt n   percent
##  CONV_TO_SNW 5 0.2631579
##         NONE 5 0.2631579
##  NOTHIN_MMAI 5 0.2631579
##       RETAIN 4 0.2105263

Plot Outputs

plotly mosaic plot

p <- myData.Report  %>% mutate( rec_opt =  as.character(rec_opt),
                     carb_opt = as.character(carb_opt)) %>% 
  ggplot() +
  geom_mosaic(aes(weight=GIS_AREA, x = product(carb_opt),  fill =  rec_opt  )) +
  scale_fill_manual(values=c("#29ACB1","#285236","#8DBF5A","#1E5631","#19FCA1","#BC21A6")) + 
  theme(  panel.background = element_rect(fill = "white",
                                          colour = "white",
                                          size = 0.5, linetype = "solid"),
          panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                                          colour = "white"), 
          panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                                          colour = "white"),
          axis.text.x = element_text(angle = 45),
          axis.text = element_text(face="bold"),
          axis.title = element_text(size = 18),
          plot.title = element_text(size = 24)) +
  xlab("Carbon") + ylab("rec option") + 
  ggtitle("Project Talamh")
ggplotly(p,tooltip="text")

heatmap

myData.Report %>% filter(OverLap=="No-Overlap") %>% mutate( rec_opt =  as.character(rec_opt),
                                                            carb_opt = as.character(carb_opt)) %>%  ggplot( aes(x=rec_opt, y=carb_opt)) +
  geom_tile(aes(fill = GIS_AREA))+
  scale_fill_distiller(palette = "YlGn") +
  labs(title = "HeatMap",
       y = "GIS AREA") + theme_bw()

Barchart 1

ggplot(data=myData.Report, aes(x=OverLap, y=GIS_AREA, fill=OverLap)) +
  geom_bar(stat="identity")

Barchart 2

ggplot(data=myData.Report, aes(x=carb_opt, y=GIS_AREA, fill=rec_opt)) +
  geom_bar(stat="identity")

Revised Plot Outputs

plotly mosaic plot

myData.Report.2 <- myData.Report %>% filter(rec_opt !="NONE") 

p <- myData.Report.2  %>% mutate( rec_opt =  as.character(rec_opt),
                     carb_opt = as.character(carb_opt)) %>% 
  ggplot() +
  geom_mosaic(aes(weight=GIS_AREA, x = product(carb_opt),  fill =  rec_opt  )) +
  scale_fill_manual(values=c("#29ACB1","#285236","#8DBF5A","#1E5631","#19FCA1","#BC21A6")) + 
  theme(  panel.background = element_rect(fill = "white",
                                          colour = "white",
                                          size = 0.5, linetype = "solid"),
          panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                                          colour = "white"), 
          panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                                          colour = "white"),
          axis.text.x = element_text(angle = 45),
          axis.text = element_text(face="bold"),
          axis.title = element_text(size = 18),
          plot.title = element_text(size = 24)) +
  xlab("Carbon") + ylab("rec option") + 
  ggtitle("Project Talamh")
ggplotly(p,tooltip="text")

heatmap

myData.Report.2 %>% filter(OverLap=="No-Overlap") %>% mutate( rec_opt =  as.character(rec_opt),
                                                            carb_opt = as.character(carb_opt)) %>%  ggplot( aes(x=rec_opt, y=carb_opt)) +
  geom_tile(aes(fill = GIS_AREA))+
  scale_fill_distiller(palette = "YlGn") +
  labs(title = "HeatMap",
       y = "GIS AREA") + theme_bw()

Barchart 1

ggplot(data=myData.Report.2, aes(x=OverLap, y=GIS_AREA, fill=OverLap)) +
  geom_bar(stat="identity")

Barchart 2

ggplot(data=myData.Report.2, aes(x=carb_opt, y=GIS_AREA, fill=rec_opt)) +
  geom_bar(stat="identity")